A fundamental stage in a search engine is to generate summaries for the results that are determined to be a good match for the user query. However, in existing systems summarization cannot begin until all results have been retrieved. Other modules might then use the content of the summaries for other tasks (e.g., extracting the main entity for the query). Accordingly, because of these interdependencies, all these operations happen sequentially, and thus, directly and negatively affect the overall time to serve the response to the user.